// obj转为str封装方法
function objTostr(obj) {
  // 如果没有传参, 为了添加随机因子,必须自己创建一个对象
  obj = obj || {};
  // 产生不同的时间信息（相当于ID）相当于不同的url
  obj.t = new Date().getTime();
  var res = [];
  for (var key in obj) {
    // 在URL中是不可以出现中文的, 如果出现了中文需要转码
    // 可以调用encodeURIComponent方法
    // URL中只可以出现字母/数字/下划线/ASCII码
    res.push(encodeURIComponent(key) + "=" + encodeURIComponent(obj[key])); // [userName=lnj, userPwd=123456];
  }
  return res.join("&"); // userName=lmx&userPwd=123456
}
function Ajax(url, obj, timeout, success, error) {
  // 0.将对象转换为字符串
  var str = objTostr(obj); // key=value&key=value;
  // 1.创建一个异步对象
  var xhr, timer;
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xhr = new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
  }
  // var xhr = new XMLHttpRequest();
  /*
          在IE浏览器中, 如果通过Ajax发送GET请求, 那么IE浏览器认为
          同一个URL只有一个结果
          05-ajax-get.txt === abc

          console.log(Math.random());
          console.log(new Date().getTime());
          */
  // 2.设置请求方式和请求地址
  xhr.open("GET", url + "?" + str, true);
  // 3.发送请求
  xhr.send();
  // 4.监听状态的变化
  xhr.onreadystatechange = function (ev2) {
    if (xhr.readyState === 4) {
      clearInterval(timer);
      if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
        // alert("请求成功");
        success(xhr);
      } else {
        error(xhr);
      }
    }
  };
  // 判断外界是否传入了超时时间（长时间未传入的反馈）
  if (timeout) {
    timer = setInterval(function () {
      console.log("中断请求");
      // 中断请求
      xhr.abort();
      clearInterval(timer);
    }, timeout);
  }
}
